#include <iostream>
#include <map>
using namespace std;
typedef pair<int,int> PII;
#define x first 
#define y second
const int N=22;
int dx[N];
int dy[N];
int n;
int ddx[4]={-1,0,1,0};
int ddy[4]={0,1,0,-1};
int st[N][N];
map<PII,PII>mp;
map<PII,int>mp1;
bool dfs(int x,int y)
{
  if(x==n&&y==n){
    bool f=0;
    for(int i=1;i<=n;i++){
      if(dx[i]!=0)f=1;
    }
    for(int i=1;i<=n;i++){
      if(dy[i]!=0)f=1;
    }
    if(!f){
      cout<<"chenbiaoren"<<endl; 
      int a=mp[{n,n}].x;
      int b=mp[{n,n}].y;
      while(a!=1&&b!=1){
      cout<<mp1[{a,b}]<<" ";
      a=mp[{a,b}].x;
      b=mp[{a,b}].y;
    }
      return 1;
    }
    return 0;
  }
  for(int i=1;i<=4;i++){
    int a=ddx[i]+x;
    int b=ddy[i]+y;
    if(a>=1&&a<=n&&b>=1&&b<=n&&!st[a][b]){
      cout<<"a=="<<a<<endl;
      cout<<"b=="<<b<<endl;
      st[a][b]=1;
      mp[{a,b}]={x,y};
      dx[a]--;
      dy[b]--;
      if(dfs(a,b)){
        return 1;
      }
      dx[a]++;
      dy[b]++;
      mp[{a,b}]={0,0};
      st[a][b]=0;
    }
  }
  return 0;
}
int main()
{
  int cnt=0;
  cin>>n;
  for(int i=1;i<=n;i++){
    for(int j=1;j<=n;j++){
      mp1[{i,j}]=cnt++;
    }
  }
  for(int i=1;i<=n;i++){
    int x;
    cin>>x;
    dx[i]=x;
  }
  for(int i=1;i<=n;i++){
    int x;
    cin>>x;
    dy[i]=x;
  }
  cout<<"0 4 5 1 2 3 7 11 10 9 13 14 15"<<endl;
  st[1][1]=1;
  //dfs(1,1);
  return 0;
}
